Create Project: springboot_endpoint_return_excel (add Spring Boot Starters from the table)
Edit File: pom.xml (add poi Maven dependencies)
Create Package: controllers (inside main package)
– Create Class: MyController.java (inside controllers package)
pom.xml
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>3.15</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>3.15</version>
</dependency>
MyController.java
package com.ivoronline.springboot_endpoint_return_excel.controllers;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.springframework.http.HttpHeaders;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.servlet.mvc.method.annotation.StreamingResponseBody;
@Controller
public class MyController {
//=======================================================================
// GET EXCEL
//=======================================================================
@ResponseBody
@GetMapping("/GetExcel")
public String getExcel() {
return "<a href='DownloadExcel'> Download Excel </a>";
}
//=======================================================================
// DOWNLOAD EXCEL
//=======================================================================
@ResponseBody
@GetMapping("/DownloadExcel")
public ResponseEntity<StreamingResponseBody> DownloadExcel() {
//CREATE EXCEL FILE
Workbook workBook = new XSSFWorkbook();
//CREATE TABLE
Sheet sheet = workBook.createSheet("My Sheet");
sheet.setColumnWidth(0, 10 * 256); //10 characters wide